package com.bootdo.common.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
import com.bootdo.common.utils.text.StringUtils;



/**
 * 代码生成业务表字段
 * 
 * @author rhgs
 * @email rhgs@163.com
 * @date 2024-01-22 14:45:00
 */
public class GenTableColumnDO implements Serializable {
	private static final long serialVersionUID = 1L;

	//编号
	@Excel(name = "编号")
	private Long columnId;
	//归属表编号
	@Excel(name = "归属表编号")
	private String tableId;
	//列名称
	@Excel(name = "列名称")
	private String columnName;
	//列描述
	@Excel(name = "列描述")
	private String columnComment;
	//列类型
	@Excel(name = "列类型")
	private String columnType;
	//JAVA类型
	@Excel(name = "JAVA类型")
	private String javaType;

	private String javaFIELD;

	public String getJavaFIELD() {
		return javaFIELD;
	}

	public void setJavaFIELD(String javaFIELD) {
		this.javaFIELD = javaFIELD;
	}

	//JAVA字段名
	@Excel(name = "JAVA字段名")
	private String javaField;
	//是否主键（1是）
	@Excel(name = "是否主键（1是）")
	private String isPk;
	//是否自增（1是）
	@Excel(name = "是否自增（1是）")
	private String isIncrement;
	//是否必填（1是）
	@Excel(name = "是否必填（1是）")
	private String isRequired;
	//是否为插入字段（1是）
	@Excel(name = "是否为插入字段（1是）")
	private String isInsert;
	//是否编辑字段（1是）
	@Excel(name = "是否编辑字段（1是）")
	private String isEdit;
	//是否列表字段（1是）
	@Excel(name = "是否列表字段（1是）")
	private String isList;
	//是否查询字段（1是）
	@Excel(name = "是否查询字段（1是）")
	private String isQuery;
	@Excel(name = "是否审批字段（1是）")
	private String isApply;
	@Excel(name = "是否查看字段（1是）")
	private String isReview;
	//查询方式（等于、不等于、大于、小于、范围）
	@Excel(name = "查询方式（等于、不等于、大于、小于、范围）")
	private String queryType;
	//显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	@Excel(name = "显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）")
	private String htmlType;
	//字典类型
	@Excel(name = "字典类型")
	private String dictType;	//字典类型
	private String dictTypePk;	//字典类型
	private String dictTypeAttr;
	private String readonly;
	private String fileType;
	private String dateRange;


	private String contentApply;


	private String applyTypeShow;


	private String calStr;

	public String getContentApply() {
		return contentApply;
	}

	public void setContentApply(String contentApply) {
		this.contentApply = contentApply;
	}

	public String getApplyTypeShow() {
		return applyTypeShow;
	}

	public void setApplyTypeShow(String applyTypeShow) {
		this.applyTypeShow = applyTypeShow;
	}

	public String getCalStr() {
		return calStr;
	}

	public void setCalStr(String calStr) {
		this.calStr = calStr;
	}

	public String getIsApply() {
		return isApply;
	}

	public void setIsApply(String isApply) {
		this.isApply = isApply;
	}

	public String getIsReview() {
		return isReview;
	}

	public void setIsReview(String isReview) {
		this.isReview = isReview;
	}

	public String getDateRange() {
		return dateRange;
	}

	public void setDateRange(String dateRange) {
		this.dateRange = dateRange;
	}

	//排序
	@Excel(name = "排序")
	private Integer sort;
	//创建者
	@Excel(name = "创建者")
	private String createBy;
	//创建时间
	@Excel(name = "创建时间")
	private Date createTime;
	//更新者
	@Excel(name = "更新者")
	private String updateBy;
	//更新时间
	@Excel(name = "更新时间")
	private Date updateTime;

	public String getFileType() {
		return fileType;
	}

	public void setFileType(String fileType) {
		this.fileType = fileType;
	}

	public String getDictTypePk() {
		return dictTypePk;
	}

	public void setDictTypePk(String dictTypePk) {
		this.dictTypePk = dictTypePk;
	}

	public String getDictTypeAttr() {
		return dictTypeAttr;
	}

	public void setDictTypeAttr(String dictTypeAttr) {
		this.dictTypeAttr = dictTypeAttr;
	}

	public String getReadonly() {
		return readonly;
	}

	public void setReadonly(String readonly) {
		this.readonly = readonly;
	}

	/**
	 * 设置：编号
	 */
	public void setColumnId(Long columnId) {
		this.columnId = columnId;
	}
	/**
	 * 获取：编号
	 */
	public Long getColumnId() {
		return columnId;
	}
	/**
	 * 设置：归属表编号
	 */
	public void setTableId(String tableId) {
		this.tableId = tableId;
	}
	/**
	 * 获取：归属表编号
	 */
	public String getTableId() {
		return tableId;
	}
	/**
	 * 设置：列名称
	 */
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	/**
	 * 获取：列名称
	 */
	public String getColumnName() {
		return columnName;
	}
	/**
	 * 设置：列描述
	 */
	public void setColumnComment(String columnComment) {
		this.columnComment = columnComment;
	}
	/**
	 * 获取：列描述
	 */
	public String getColumnComment() {
		return columnComment;
	}
	/**
	 * 设置：列类型
	 */
	public void setColumnType(String columnType) {
		this.columnType = columnType;
	}
	/**
	 * 获取：列类型
	 */
	public String getColumnType() {
		return columnType;
	}
	/**
	 * 设置：JAVA类型
	 */
	public void setJavaType(String javaType) {
		this.javaType = javaType;
	}
	/**
	 * 获取：JAVA类型
	 */
	public String getJavaType() {
		return javaType;
	}
	/**
	 * 设置：JAVA字段名
	 */
	public void setJavaField(String javaField) {
		this.javaField = javaField;
	}
	/**
	 * 获取：JAVA字段名
	 */
	public String getJavaField() {
		return javaField;
	}
	/**
	 * 设置：是否主键（1是）
	 */
	public void setIsPk(String isPk) {
		this.isPk = isPk;
	}
	/**
	 * 获取：是否主键（1是）
	 */
	public String getIsPk() {
		return isPk;
	}


	public boolean isPk()
	{
		return isPk(this.isPk);
	}

	public boolean isPk(String isPk)
	{
		return isPk != null && StringUtils.equals("1", isPk);
	}

	/**
	 * 设置：是否自增（1是）
	 */
	public void setIsIncrement(String isIncrement) {
		this.isIncrement = isIncrement;
	}
	/**
	 * 获取：是否自增（1是）
	 */
	public String getIsIncrement() {
		return isIncrement;
	}
	/**
	 * 设置：是否必填（1是）
	 */
	public void setIsRequired(String isRequired) {
		this.isRequired = isRequired;
	}
	/**
	 * 获取：是否必填（1是）
	 */
	public String getIsRequired() {
		return isRequired;
	}
	/**
	 * 设置：是否为插入字段（1是）
	 */
	public void setIsInsert(String isInsert) {
		this.isInsert = isInsert;
	}
	/**
	 * 获取：是否为插入字段（1是）
	 */
	public String getIsInsert() {
		return isInsert;
	}
	/**
	 * 设置：是否编辑字段（1是）
	 */
	public void setIsEdit(String isEdit) {
		this.isEdit = isEdit;
	}
	/**
	 * 获取：是否编辑字段（1是）
	 */
	public String getIsEdit() {
		return isEdit;
	}
	/**
	 * 设置：是否列表字段（1是）
	 */
	public void setIsList(String isList) {
		this.isList = isList;
	}
	/**
	 * 获取：是否列表字段（1是）
	 */
	public String getIsList() {
		return isList;
	}

	public boolean isList()
	{
		return isList(this.isList);
	}

	public boolean isList(String isList)
	{
		return isList != null && StringUtils.equals("1", isList);
	}


	/**
	 * 设置：是否查询字段（1是）
	 */
	public void setIsQuery(String isQuery) {
		this.isQuery = isQuery;
	}
	/**
	 * 获取：是否查询字段（1是）
	 */
	public String getIsQuery() {
		return isQuery;
	}
	/**
	 * 设置：查询方式（等于、不等于、大于、小于、范围）
	 */
	public void setQueryType(String queryType) {
		this.queryType = queryType;
	}
	/**
	 * 获取：查询方式（等于、不等于、大于、小于、范围）
	 */
	public String getQueryType() {
		return queryType;
	}
	/**
	 * 设置：显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	 */
	public void setHtmlType(String htmlType) {
		this.htmlType = htmlType;
	}
	/**
	 * 获取：显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	 */
	public String getHtmlType() {
		return htmlType;
	}
	/**
	 * 设置：字典类型
	 */
	public void setDictType(String dictType) {
		this.dictType = dictType;
	}
	/**
	 * 获取：字典类型
	 */
	public String getDictType() {
		return dictType;
	}
	/**
	 * 设置：排序
	 */
	public void setSort(Integer sort) {
		this.sort = sort;
	}
	/**
	 * 获取：排序
	 */
	public Integer getSort() {
		return sort;
	}


	public boolean isSuperColumn()
	{
		return isSuperColumn(this.javaField);
	}

	public static boolean isSuperColumn(String javaField)
	{
		return StringUtils.equalsAnyIgnoreCase(javaField,
				//BaseEntity
				"createBy", "createTime", "updateBy", "updateTime", "remark",
				//TreeEntity
				"parentName", "parentId", "orderNum", "ancestors");
	}

	/**
	 * 设置：创建者
	 */
	public void setCreateBy(String createBy) {
		this.createBy = createBy;
	}
	/**
	 * 获取：创建者
	 */
	public String getCreateBy() {
		return createBy;
	}
	/**
	 * 设置：创建时间
	 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	/**
	 * 获取：创建时间
	 */
	public Date getCreateTime() {
		return createTime;
	}
	/**
	 * 设置：更新者
	 */
	public void setUpdateBy(String updateBy) {
		this.updateBy = updateBy;
	}
	/**
	 * 获取：更新者
	 */
	public String getUpdateBy() {
		return updateBy;
	}
	/**
	 * 设置：更新时间
	 */
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	/**
	 * 获取：更新时间
	 */
	public Date getUpdateTime() {
		return updateTime;
	}



	public boolean isUsableColumn()
	{
		return isUsableColumn(javaField);
	}

	public static boolean isUsableColumn(String javaField)
	{
		//isSuperColumn()中的名单用于避免生成多余Domain属性，若某些属性在生成页面时需要用到不能忽略，则放在此处白名单
		return StringUtils.equalsAnyIgnoreCase(javaField, "parentId" , "orderNum");
	}

	public String readConverterExp()
	{
		String remarks = StringUtils.substringBetween(this.columnComment, "（", "）");
		StringBuffer sb = new StringBuffer();
		if (StringUtils.isNotEmpty(remarks))
		{
			for (String value : remarks.split(" "))
			{
				if (StringUtils.isNotEmpty(value))
				{
					Object startStr = value.subSequence(0, 1);
					String endStr = value.substring(1);
					sb.append("").append(startStr).append("=").append(endStr).append(",");
				}
			}
			return sb.deleteCharAt(sb.length() - 1).toString();
		}
		else
		{
			return this.columnComment;
		}
	}
}
